home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / widgets / XtArgs.h < prev   
C/C++ Source or Header  |  1991-02-01  |  965b  |  38 lines

  1. /*
  2.    File: XtArgs.h
  3.    Defines macros for easy argument list handling
  4. */
  5. #ifndef MaxArgs
  6. #define MaxArgs 20
  7. #endif
  8. #ifndef MaxCallbacks
  9. #define MaxCallbacks 20
  10. #endif
  11.  
  12. static XtCallbackRec WidgetCallbacks[MaxCallbacks];
  13. static Arg WidgetArgs[MaxArgs];
  14. static int NrOfCallbacks, FirstCallback;
  15. static int NrOfArgs;
  16.  
  17. /*
  18.    Now define some access macros on the widget arguments
  19. */
  20. #define StartArgs NrOfArgs = NrOfCallbacks = FirstCallback = 0
  21. #define SetArg(r,v) XtSetArg (WidgetArgs [NrOfArgs], r, v); NrOfArgs++
  22.  
  23. #define SetCallback(func, value) \
  24.     WidgetCallbacks [NrOfCallbacks].callback = (XtCallbackProc) func;\
  25.     WidgetCallbacks [NrOfCallbacks++].closure = (caddr_t) value
  26.  
  27. #define UseCallback(resource) \
  28.     SetCallback (NULL, NULL); \
  29.     SetArg (resource, &WidgetCallbacks [FirstCallback]);\
  30.     FirstCallback = NrOfCallbacks
  31.  
  32. #define Callback(proc) \
  33.     SetCallback(proc,NULL); \
  34.     UseCallback(XtNcallback)
  35.  
  36. #define UseArgs WidgetArgs, NrOfArgs
  37. #define NoArgs NULL,0
  38.